package com.ssy.lingxi.contract.service;

import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.contract.model.dto.OperateLogInnerResponDto;
import com.ssy.lingxi.contract.model.dto.OperateLogInputDto;
import com.ssy.lingxi.contract.model.vo.common.request.ContractInnerRecordPageVO;
import com.ssy.lingxi.contract.model.vo.coordination.response.ContractCoordinationInnerRecordVO;
import com.ssy.lingxi.contract.model.vo.manage.response.ContractManageInnerRecordVO;

/**
 * 合同内部流转记录接口定义
 * @author 伍将
 * @date 2021/2/7
 * @version 2.0.0
 */
public interface IContractInnerRecordService {

    /**
     * 新增外部流转记录
     * @author 伍将
     * @date 2021/2/7
     * @param user: 新增外部流转记录
     * @param contractId: 合同id
     * @param status: 状态
     * @param statusName: 状态名称
     * @param operate: 操作
     * @param opinion: 意见
     * @return 操作结果
     **/
    Wrapper<Void> add(UserLoginCacheDTO user, Long contractId, Integer status, String statusName, String operate, String opinion);

    /**
     * 分页查询合同管理下的内部流转记录
     * @author 伍将
     * @date 2021/2/24
     * @param user: 当前登录用户
     * @param pageVO: 分页请求参数
     * @return 操作结果
     **/
    Wrapper<PageData<ContractManageInnerRecordVO>> pageManageList(UserLoginCacheDTO user, ContractInnerRecordPageVO pageVO);

    /**
     * 分页查询合同协作下的内部流转记录
     * @author 伍将
     * @date 2021/2/25
     * @param user: 当前登录用户
     * @param pageVO: 分页请求参数
     * @return 操作结果
     **/
    Wrapper<PageData<ContractCoordinationInnerRecordVO>> pageCoordinationList(UserLoginCacheDTO user, ContractInnerRecordPageVO pageVO);

    /**
     * 分页查询-内部流转记录
     * @param loginUser
     * @param pageVO
     * @return
     */
    PageData<OperateLogInnerResponDto> pageListCommon(UserLoginCacheDTO loginUser, OperateLogInputDto pageVO);
}
